/**
 * Copyright(c) 2014 Xunton Solutions
 *
 * History:
 *   15-9-28 上午10:31 Created by dwzhang
 */
package com.jade.bss.weixin.api.card.protocol;

import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * 卡券基础信息字段，所有卡券都拥有这些字段信息。
 *
 * @author <a href="mailto:dwzhang@xunton.com">dwzhang</a> 
 * @version 1.0 15-9-28 上午10:31
 */
public class BaseInfo implements Serializable
{
    //卡券的商户logo，建议像素为300*300。
    @JsonProperty ("logo_url")
    private String logoUrl;
    //Code展示类型，"CODE_TYPE_TEXT"，文本；
    // "CODE_TYPE_BARCODE"，一维码 ；
    // "CODE_TYPE_QRCODE"，二维码；
    // "CODE_TYPE_ONLY_QRCODE",二维码无code显示；
    // "CODE_TYPE_ONLY_BARCODE",一维码无code显示；
    @JsonProperty ("code_type")
    private String codeType;
    //商户名字,字数上限为12个汉字。
    @JsonProperty ("brand_name")
    private String brandName;
    //卡券名，字数上限为9个汉字。(建议涵盖卡券属性、服务及金额)。
    private String title;
    //券名，字数上限为18个汉字。
    @JsonProperty ("sub_title")
    private String subTitle;
   //券颜色。按色彩规范标注填写Color010-Color100。
    private String color;
    //卡券使用提醒，字数上限为16个汉字。
    private String notice;
    //卡券使用说明，字数上限为1024个汉字。
    private String description;
    //商品信息。
    private Sku sku;
    //使用日期，有效期的信息
    @JsonProperty ("date_info")
    private DateInfo dateInfo;
    //是否自定义Code码。填写true或false，默认为false。通常自有优惠码系统的开发者选择自定义Code码，并在卡券投放时带入Code码
    @JsonProperty ("use_custom_code")
    private boolean userCustomCode;
    //是否指定用户领取，填写true或false。默认为false。通常指定特殊用户群体投放卡券或防止刷券时选择指定用户领取
    @JsonProperty ("bind_openid")
    private boolean bindOpenId;
    //客服电话。
    @JsonProperty ("service_phone")
    private String servicePhone;
    //门店位置poiid。调用POI门店管理接口获取门店位置poiid。具备线下门店的商户为必填。
    @JsonProperty ("location_id_list")
    private long[] locationIdList;
    //第三方来源名，例如同程旅游、大众点评。
    private String source;
    //自定义跳转外链的入口名字。详情见活用自定义入口
    @JsonProperty ("custom_url_name")
    private String customUrlName;
    //自定义跳转的URL。
    @JsonProperty ("custom_url")
    private String customUrl;
    //显示在入口右侧的提示语。
    @JsonProperty ("custom_url_sub_title")
    private String customUrlSubTitle;
    //营销场景的自定义入口名称。
    @JsonProperty ("promotion_url_name")
    private String promotionUrlName;
    //入口跳转外链的地址链接。
    @JsonProperty ("promotion_url")
    private String promotionUrl;
    //显示在营销入口右侧的提示语。
    @JsonProperty ("promotion_url_sub_title")
    private String promotionUrlSubTitle;
    //每人可领券的数量限制,不填写默认为50。
    @JsonProperty ("get_limit")
    private long getLimit = 1;
    //卡券领取页面是否可分享。
    @JsonProperty ("can_share")
    private boolean canShare;
    //卡券是否可转赠。
    @JsonProperty ("can_give_friend")
    private boolean canGiveFriend;

    public String getLogoUrl()
    {
        return logoUrl;
    }

    public void setLogoUrl(String logoUrl)
    {
        this.logoUrl = logoUrl;
    }

    public String getCodeType()
    {
        return codeType;
    }

    public void setCodeType(String codeType)
    {
        this.codeType = codeType;
    }

    public String getBrandName()
    {
        return brandName;
    }

    public void setBrandName(String brandName)
    {
        this.brandName = brandName;
    }

    public String getTitle()
    {
        return title;
    }

    public void setTitle(String title)
    {
        this.title = title;
    }

    public String getSubTitle()
    {
        return subTitle;
    }

    public void setSubTitle(String subTitle)
    {
        this.subTitle = subTitle;
    }

    public String getColor()
    {
        return color;
    }

    public void setColor(String color)
    {
        this.color = color;
    }

    public String getNotice()
    {
        return notice;
    }

    public void setNotice(String notice)
    {
        this.notice = notice;
    }

    public String getDescription()
    {
        return description;
    }

    public void setDescription(String description)
    {
        this.description = description;
    }

    public Sku getSku()
    {
        return sku;
    }

    public void setSku(Sku sku)
    {
        this.sku = sku;
    }

    public DateInfo getDateInfo()
    {
        return dateInfo;
    }

    public void setDateInfo(DateInfo dateInfo)
    {
        this.dateInfo = dateInfo;
    }

    public boolean isUserCustomCode()
    {
        return userCustomCode;
    }

    public void setUserCustomCode(boolean userCustomCode)
    {
        this.userCustomCode = userCustomCode;
    }

    public boolean isBindOpenId()
    {
        return bindOpenId;
    }

    public void setBindOpenId(boolean bindOpenId)
    {
        this.bindOpenId = bindOpenId;
    }

    public String getServicePhone()
    {
        return servicePhone;
    }

    public void setServicePhone(String servicePhone)
    {
        this.servicePhone = servicePhone;
    }

    public long[] getLocationIdList()
    {
        return locationIdList;
    }

    public void setLocationIdList(long[] locationIdList)
    {
        this.locationIdList = locationIdList;
    }

    public String getSource()
    {
        return source;
    }

    public void setSource(String source)
    {
        this.source = source;
    }

    public String getCustomUrlName()
    {
        return customUrlName;
    }

    public void setCustomUrlName(String customUrlName)
    {
        this.customUrlName = customUrlName;
    }

    public String getCustomUrl()
    {
        return customUrl;
    }

    public void setCustomUrl(String customUrl)
    {
        this.customUrl = customUrl;
    }

    public String getCustomUrlSubTitle()
    {
        return customUrlSubTitle;
    }

    public void setCustomUrlSubTitle(String customUrlSubTitle)
    {
        this.customUrlSubTitle = customUrlSubTitle;
    }

    public String getPromotionUrlName()
    {
        return promotionUrlName;
    }

    public void setPromotionUrlName(String promotionUrlName)
    {
        this.promotionUrlName = promotionUrlName;
    }

    public String getPromotionUrl()
    {
        return promotionUrl;
    }

    public void setPromotionUrl(String promotionUrl)
    {
        this.promotionUrl = promotionUrl;
    }

    public String getPromotionUrlSubTitle()
    {
        return promotionUrlSubTitle;
    }

    public void setPromotionUrlSubTitle(String promotionUrlSubTitle)
    {
        this.promotionUrlSubTitle = promotionUrlSubTitle;
    }

    public long getGetLimit()
    {
        return getLimit;
    }

    public void setGetLimit(long getLimit)
    {
        this.getLimit = getLimit;
    }

    public boolean isCanShare()
    {
        return canShare;
    }

    public void setCanShare(boolean canShare)
    {
        this.canShare = canShare;
    }

    public boolean isCanGiveFriend()
    {
        return canGiveFriend;
    }

    public void setCanGiveFriend(boolean canGiveFriend)
    {
        this.canGiveFriend = canGiveFriend;
    }
}
